perm filename KICLIP.SAI[KI,ALS] blob sn#095834 filedate 1974-04-08 generic text, type T, neo UTF8
00010	BEGIN
00020	DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
00025	REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
00030	REQUIRE "KIPLA2.REL[KI,ALS]" LOAD_MODULE;
00040	REQUIRE "FIXUPA.REL[X,ALS]" LIBRARY;
00050	REQUIRE "IO.REL[X,ALS]" LIBRARY;
00060	REQUIRE "SUIO.REL[X,ALS]" LIBRARY;
00070	REQUIRE "LIB.REL[NET,NJM]" LIBRARY;
00080	EXTERNAL FORTRAN PROCEDURE KIPLAY;
00085	INTEGER ARRAY DPYBUF[0:8192];
00087	INTEGER ARRAY DATA[0:511];
00090	INTEGER ARRAY NAMES[0:100];
00100	INTEGER ARRAY DUMMY[1:2];
00110	INTEGER ARRAY NAME[0:5];
00120	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,
00122	    NEW,I,J,K,L,V,LP,EOF,PP,SEGNAM,POINTX,PT0,PT1,PT2;
00125	INTEGER ARRAY PT[0:8];
00130	STRING READ,READ2,READ3;
00140	BOOLEAN ER;
00150	
00160	PROCEDURE SAY;
00170	BEGIN "SAY"
00180	
00190	INTEGER I,J;
00200	STRING READ2,READ3;
00210	
00220	READ3←"";
00230	FOR I←1 STEP 1 UNTIL 5 DO BEGIN
00240	  FOR J←1 STEP 1 UNTIL 5 DO BEGIN
00250	    READ3←READ3&READ[1 TO 1];
00260	    READ←READ[2 TO 20];
00270	    END;
00280	  NAME[I]←CVASC(READ3);
00290	  READ3←"";
00300	  END;
00310	
00320	START_CODE '047000400037; MOVEM 0,SEGNAM; '047040400017; END;
00330	⊂ Get segment name and detach;
00340	  KIPLAY(NAME[1],DUMMY[1]);
00350	START_CODE MOVE 0,SEGNAM; '047000400016; JFCL; END;
00360	⊂ Reattach segment so exit will be in order;
00370	END "SAY";
00380	
00390	
00400	PROCEDURE SHUFFLE;
00410	BEGIN "SHUF"
00420	INTEGER I,J,K;
00430	
00440	AIVECT(-640,386);
00450	I←DPYPTR-PT1;		⊂ Words to save;
00460	J←PT1-PT0;		⊂ Words to overwrite;
00470	for k←1 step 1 until i do dpybuf[k+3]←dpybuf[k+3+j];
00480	for k←i+1 step 1 until j+1 do dpybuf[k+3]←1;
00490	PT1←DPYPTR←PT0+I;
00500	END "SHUF";
00510	
00520	
00530	PROCEDURE PLOT;
00540	BEGIN "PLOT"
00550	INTEGER I,J,K,L,JP,LP,II,JJ;
00560	
00570	WHILE EOF=0 DO BEGIN
00575	  CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,0,2,0,0,0);
00577	  ENTER(CHAN3,"TMP1.TMP",0); READ←"TMP1.TMP";
00580	  FOR I←1 STEP 1 UNTIL 6 DO BEGIN
00590	   FOR J←1 STEP 1 UNTIL 5 DO BEGIN
00600	      ARRYIN(CHAN1,DATA[0],512);
00605	      ARRYOUT(CHAN3,DATA[0],512);
00610	      FOR K←0 STEP 2 UNTIL 510 DO BEGIN
00620	        L←LDB(POINT(12,DATA[K],11)); IF L>2047 THEN L←L-4096; L←L%16;
00630	        LP←L-JP; RVECT(1,LP); JP←L;
00640	        END;
00650	      END;
00660	    RIVECT(-640,-LP); RIVECT(-640,-128);
00670	    PT[I]←DPYPTR;
00680	    END;
00682	DPYSST(":0");
00684	FOR I←1 STEP 1 UNTIL 6 DO BEGIN
00686	  RIVECT(224,0); DPYSST(":"&CVS(I)); END;
00687	
00690	  DPYOUT(0); PTOCHW(0,'10120);
00691	OUTSTR("Portion shown says-"&CRLF);
00693	CLOSE(CHAN3); ⊂  SAY;
00694	OUTSTR("CR to continue"&CRLF);
00695	INCHWL;
00697	PT1←DPYPTR; SHUFFLE;
00700	  END;
00710	
00720	END "PLOT";
00730	
00740	
00800	TYPLOC(-384,-512); DPYSET(DPYBUF); 
00810	AIVECT(-640,448); PT0←DPYPTR;
01000	
01010	OUTSTR("This program allows one to hear a file, to rename it and to add the"
01020	   &CRLF&TB&
01030	    " new file name to the list (in sixbit) in file KILIST.SIX"&CRLF);
01040	
01050	OUTSTR("A space only as old name is taken to mean LISTEN.TMP"&CRLF
01060	  &"A ? will cause the list in KILIST.SIX to be typed"&CRLF
01070	      &"A CR only terminates the session"&CRLF);
01080	CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4;
01090	START_CODE MOVE 0,['325004000000]; '047000400110; END;
01100	
01110	    CLOSE(CHAN2); OPEN (CHAN2,"DSK",'10,2,0,0,0,EOF);
01120	    LOOKUP(CHAN2,"KILIST.SIX[KI,ALS]",ER);
01130	    ARRYIN(CHAN2,NAMES[0],100);
01140	
01150	WHILE TRUE DO BEGIN "LOOP"
01160	  OUTSTR(CRLF&"Type the old file name (with extension) ");
01170	  ER←1; WHILE ER DO BEGIN "OLD"
01180	    IF ( READ←INCHWL)="" THEN DONE "LOOP";
01190	    IF READ=" " THEN READ←"LISTEN.TMP";
01200	
01210	    IF READ="?" THEN BEGIN
01220	      OUTSTR(CRLF& "The following files are listed)"&CRLF&LF);
01230	      FOR I←0 STEP 1 UNTIL 99 DO BEGIN
01240	        IF NAMES[I]=0 THEN DONE;
01250	        OUTSTR(CVXSTR(NAMES[I])&".SAY"&CRLF);
01260	        END;
01270	      CONTINUE "LOOP";
01280	      END;
01290	
01300	    CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,1,1,0,0,EOF);
01310	    LOOKUP(CHAN1,READ,ER);
01320	    IF ER THEN OUTSTR("File "&READ&" could not be found. "
01330	      &CRLF&"Try again ")
01340	    ELSE DONE;
01350	    END "OLD";
01360	
01370	⊂ SAY;
01375	PLOT;
01380	
     

00790	  WHILE TRUE DO BEGIN "NEWN"
00800	  OUTSTR("Now type new name"&CRLF&
00810	      " (CR only leaves old name unchanged and unrecorded) ");
00820	    IF ( READ2←INCHWL)="" THEN CONTINUE "LOOP";
00830	
00840	    IF READ2="?" THEN BEGIN
00850	      OUTSTR(CRLF& "The following files are listed)"&CRLF&LF);
00860	      FOR I←0 STEP 1 UNTIL 99 DO BEGIN
00870	        IF NAMES[I]=0 THEN DONE;
00880	        OUTSTR(CVXSTR(NAMES[I])&".SAY"&CRLF);
00890	        END;
00900	      CONTINUE "NEWN";
00910	      END;
00920	
00930	    READ3←"";
00940	
00950	    FOR I←0 STEP 1 UNTIL 5 DO BEGIN
00960	      IF READ2[1 TO 1]="." THEN DONE;
00970	      READ3←READ3&READ2[1 TO 1]; READ2←READ2[2 TO 5]; END;
00980	
00990	    NEW←CVSIX(READ3);
01000	
01010	    FOR I←0 STEP 1 UNTIL 99 DO BEGIN
01020	      IF NAMES[I]=0 THEN DONE "NEWN";
01030	      IF NAMES[I]=NEW THEN BEGIN
01040	        OUTSTR("New name already has been used"
01050	         &CRLF&"Try again or CR to void request "&CRLF);
01060	        DONE;
01070	        END;
01080	      END;
01090	    END "NEWN";
01100	
01110	  NAMES[I]←NEW;
01120	
01130	  CLOSE(CHAN2); OPEN(CHAN2,"DSK",'10,0,2,0,0,0);
01140	  ENTER(CHAN2,"KILIST.SIX[KI,ALS]",0);
01150	  ARRYOUT(CHAN2,NAMES[0],100);
01160	  CLOSE(CHAN2);
01170	  
01180	  CLOSE(CHAN1); RENAME(CHAN1,READ3&".SAY",0,0);
01190	  RELEASE(CHAN1);
01200	  END "LOOP";
01210	
01220	START_CODE MOVE 0,['325000000000]; '047000400110; END;
01230	
01240	END;